home *** CD-ROM | disk | FTP | other *** search
/ Shareware Grab Bag / Shareware Grab Bag.iso / 010 / connect4.arc / CONNECT4.BAS (.txt)
Encoding:
GW-BASIC  |  1980-01-01  |  4.8 KB  |  145 lines

  1. 10  SCREEN 1:COLOR 1,0:CLS:RANDOMIZE CVD(TIME$):KEY OFF:CLEAR  100:DEFINT I-S: DIM  IB(7,6),N$(2),IR(4),IS(7)
  2. 20  CLS:LOCATE 2,1:PRINT "         CONNECT-4": PRINT : PRINT "  This game can be played between":PRINT :PRINT " two people, or between one person,":PRINT :PRINT " and the IBM-PC":
  3. 30   PRINT : PRINT "  Which option do you want":PRINT :INPUT "(I=IBM-PC or 2=Two people)";IN$
  4. 40   IF  IN$="I" OR IN$="i" THEN II=1: GOTO  200
  5. 50   IF IN$="2" THEN II=2: GOTO  70
  6. 60   GOTO 10
  7. 70   PRINT : INPUT "  First player's name";N$(1):PRINT : PRINT "  You are the GREEN Pieces"
  8. 80   PRINT :INPUT "  Second player's name";N$(2):PRINT : PRINT "  You will be the RED Pieces"
  9. 90   FOR  I=1  TO  3000: NEXT I
  10. 100   GOSUB  510:IX=0
  11. 110  IX=IX+1
  12. 120   IF  IX<43 THEN  GOTO 140
  13. 130   CLS :LOCATE 10,12: PRINT "Tie Game!!!!": FOR I=1 TO 2000: NEXT : GOTO 430
  14. 140  MD=IX/2: IF  MD*2=IX  THEN  IO=2 ELSE IO=1
  15. 150  LOCATE 24,2: PRINT N$(IO);", Your move            ";:IN$=""
  16. 160  IN$=INKEY$: IF  LEN(IN$)=0 THEN  GOTO  160
  17. 170  IN=VAL(IN$): IF  IN<1 OR IN>7 THEN  GOTO 150
  18. 180   IF  IB(IN,1)<>0 THEN  GOTO 150
  19. 190   GOSUB  580: GOSUB 740: GOTO 110
  20. 200   PRINT : INPUT "  What's your name";N$(1):PRINT : PRINT "  You will be the GREEN Pieces"
  21. 210   FOR  I=1 TO 3000: NEXT 
  22. 220   GOSUB  510:IK=0
  23. 230  IK=IK+1: IF  IK<43 THEN  GOTO  250
  24. 240   CLS :LOCATE 24,2: PRINT "We TIED!!!"                   ;: FOR  I=1  TO  3000: NEXT : GOTO  480
  25. 250  MD=IK/2: IF  MD*2=IK  THEN  IO=2 ELSE IO=1
  26. 260   IF  IO=2 THEN  GOTO  330
  27. 270   LOCATE 24,2:PRINT N$(1);", Your move";: N$(2)="I"
  28. 280  IN$=INKEY$: IF  LEN(IN$)=0 THEN  GOTO  280
  29. 290  IN=VAL(IN$): IF  IN<1 OR IN>7 THEN  GOTO  270
  30. 300   IF  IB(IN,1)<>0 THEN GOTO  270
  31. 310   LOCATE 24,1:PRINT "                    ";
  32. 320   GOSUB  580: GOSUB  740: GOTO  230
  33. 330   IF  IK=2 THEN HX=INT(RND*7): GOTO  405
  34. 340  HI=0:HJ=1:HX=4: FOR  IX=1  TO  7: GOSUB  1020
  35. 350   IF  IS(IX)>HI  THEN  HI=IS(IX):HX=IX:HJ=JX
  36. 360   NEXT  IX: IF  HI=>625 THEN  GOTO  410
  37. 370  IB(HX,HJ)=2
  38. 380  IX=HX: GOSUB  1020:IB(HX,HJ)=0: IF  IS(IX)=>3125  GOTO  410
  39. 390   IF  IS(IX)<625 THEN  GOTO  410
  40. 400  HX=INT(RND*7): IF IB(HX,1)<>0 THEN  GOTO  400
  41. 405  HX = INT(RND*7):IF HX = 0 THEN GOTO 405
  42. 410  IN=HX: GOSUB  580: GOSUB  740
  43. 420   GOTO  230
  44. 430   FOR  I=1  TO  2000: NEXT  I
  45. 440   CLS : INPUT  "Do you want to play again";IN$
  46. 450  A$=N$(1):N$(1)=N$(2):N$(2)=A$
  47. 460   IF IN$="N" OR IN$="n" THEN SYSTEM ELSE GOTO 465
  48. 465   INPUT"Same players? (Return = Yes or NO)";Z$:IF LEFT$(Z$,1)="N" OR LEFT$(Z$,1)="N" THEN GOTO 70 ELSE GOTO 100
  49. 470  SYSTEM
  50. 480   CLS : INPUT "How about another game";IN$
  51. 490   IF  IN$="Y" OR IN$="y" THEN GOTO  220
  52. 500  SYSTEM
  53. 510   CLS :P=3: FOR  I=1  TO  7: LOCATE 1,P:PRINT I;:P=P+5: NEXT
  54. 520   FOR  I=47 TO 288 STEP 40: FOR J=10 TO 136 STEP 21:PSET(I,J),3: NEXT J,I
  55. 530   FOR I=12 TO 291 STEP 40: FOR J=10 TO 136 STEP 21:PSET(I,J),3: NEXT J,I
  56. 540  X=8:Y=11:FOR I = 1 TO 8:LINE(X,10)-(Y,136),,BF:X =X + 40:Y = Y + 40:NEXT I
  57. 550   LINE(7,136)-(292,138),,BF
  58. 560   FOR  I=1 TO 7: FOR J=1 TO 6:IB(I,J)=0: NEXT J,I
  59. 565  X=8:Y=11:FOR I = 1 TO 8:LINE(X,10)-(Y,136),,BF:X =X + 40:Y = Y + 40:NEXT I
  60. 570   RETURN 
  61. 580   FOR  J=1  TO  6: IF  IB(IN,J)=0 THEN JN=J: NEXT  J
  62. 590  IL=IN*40-10: IF  IO=2  GOTO  650
  63. 600  IB(IN,JN)=1:JL=JN*21-1
  64. 635  CIRCLE (IL,JL),12,1:PAINT(IL,JL),1
  65. 640   GOTO  730
  66. 650  IB(IN,JN)=2:JL=JN*21-1
  67. 660  CIRCLE (IL,JL),12,2:PAINT(IL,JL),2
  68. 730   RETURN 
  69. 740   IF  JN>3 THEN GOTO  790
  70. 750  IC=0:J=JN
  71. 760   IF  IB(IN,J)=IO  THEN  IC=IC+1 ELSE IC=0
  72. 770   IF  IC=4 THEN GOTO  960
  73. 780  J=J+1: IF  J<7 THEN GOTO  760
  74. 790  IC=0: FOR  I=1  TO  7: IF  IB(I,JN)=IO  THEN  IC=IC+1 ELSE IC=0
  75. 800   IF  IC=4 THEN GOTO  960
  76. 810   NEXT 
  77. 820  IC=0:IL=IN:JL=JN
  78. 830   IF  IL=1 OR JL=6 THEN GOTO 850
  79. 840  IL=IL-1:JL=JL+1: GOTO  830
  80. 850   IF  IB(IL,JL)=IO  THEN  IC=IC+1 ELSE IC=0
  81. 860   IF  IC=4 THEN GOTO  960
  82. 870  IL=IL+1:JL=JL-1: IF  IL>7 OR JL<1 THEN  GOTO  890
  83. 880   GOTO  850
  84. 890  IC=0:IL=IN:JL=JN
  85. 900   IF  IL=1 OR JL=1 THEN  GOTO  920
  86. 910  IL=IL-1:JL=JL-1: GOTO 900
  87. 920   IF  IB(IL,JL)=IO  THEN  IC=IC+1 ELSE IC=0
  88. 930   IF  IC=4 THEN GOTO  960
  89. 940  IL=IL+1:JL=JL+1: IF  IL>7 OR JL>6 THEN  GOTO  1010
  90. 950   GOTO  920
  91. 960   FOR  I=1  TO  10:LOCATE 24,2: PRINT N$(IO);" WON!!!!!!!";:
  92. 970   FOR  J=1  TO  200: NEXT  J
  93. 980   LOCATE 24,1:PRINT "                           ";: NEXT  I
  94. 990   IF  II=1 THEN GOTO  480
  95. 1000   GOTO  430
  96. 1010   RETURN 
  97. 1020  IS(IX)=0:J=0: IF  IB(IX,1)<>0 THEN GOTO  1370
  98. 1030  J=J+1: IF  J>6  GOTO  1060
  99. 1040   IF  IB(IX,J)=0 THEN JX=J
  100. 1050   GOTO  1030
  101. 1060  JA=JX+3
  102. 1070   IF  JA>6 THEN JA=JA-1: GOTO  1070
  103. 1080   IF  JA<3 THEN GOTO  1120
  104. 1090   IF  JA<JX THEN GOTO  1120
  105. 1100  I=0: FOR  J=JA  TO  JA-3  STEP -1:I=I+1:IR(I)=IB(IX,J): NEXT  J
  106. 1110   GOSUB  1380:IS(IX)=IS(IX)+IS:JA=JA-1: GOTO  1080
  107. 1120  IA=IX-3
  108. 1130   IF  IA<0 THEN IA=IA+1: GOTO  1130
  109. 1140   IF  IA>4 THEN GOTO  1180
  110. 1150   IF  IA>IX THEN GOTO  1180
  111. 1160  J=0: FOR  I=IA  TO  IA+3:J=J+1:IR(J)=IB(I,JX): NEXT  I
  112. 1170   GOSUB  1380:IS(IX)=IS(IX)+IS:IA=IA+1: GOTO  1140
  113. 1180  IA=IX-3:JA=JX-3
  114. 1190   IF  IA<0 THEN IA=IA+1:JA=JA+1: GOTO  1190
  115. 1200   IF  JA<0 THEN IA=IA+1:JA=JA+1: GOTO  1200
  116. 1210   IF  IA>IX THEN GOTO  1270
  117. 1220   IF  IA>4 THEN GOTO  1270
  118. 1230   IF  JA>JX THEN GOTO  1270
  119. 1240   IF  JA>3 THEN GOTO  1270
  120. 1250  J=0:K=JA-1: FOR  I=IA  TO  IA+3:J=J+1:K=K+1:IR(J)=IB(I,K): NEXT  I
  121. 1260   GOSUB  1380:IS(IX)=IS(IX)+IS:IA=IA+1:JA=JA+1: GOTO  1210
  122. 1270  IA=IX-3:JA=JX+3
  123. 1280   IF  IA<0 THEN IA=IA+1:JA=JA-1: GOTO  1280
  124. 1290   IF  JA>6 THEN IA=IA+1:JA=JA-1: GOTO  1290
  125. 1300   IF  IA>IX THEN GOTO  1370
  126. 1310   IF  IA>4 THEN  GOTO  1370
  127. 1320   IF  JA<JX THEN  GOTO  1370
  128. 1330   IF  JA<4 THEN  GOTO  1370
  129. 1340  J=0:K=JA+1: FOR  I=IA  TO  IA+3 :J=J+1:K=K-1:IR(J)=IB(I,K): NEXT  I
  130. 1350   GOSUB  1380:IS(IX)=IS(IX)+IS
  131. 1360  IA=IA+1:JA=JA-1: GOTO  1300
  132. 1370   RETURN 
  133. 1380  IS=0:I0=0:I1=0:I2=0: FOR  I=1  TO  4: IF  IR(I)=0 THEN I0=I0+1
  134. 1390   IF  IR(I)=1 THEN I1=I1+1
  135. 1400   IF  IR(I)=2 THEN I2=I2+1
  136. 1410   NEXT 
  137. 1420  IS=1
  138. 1430   IF  I2=3 THEN IS=3125
  139. 1440   IF  I1=3 THEN IS=625
  140. 1450   IF  I2=2 AND I0=2 THEN IS=125
  141. 1460   IF  I1=2 AND I0=2 THEN IS=125
  142. 1470   IF  I2=1 AND I0=3 THEN IS=20
  143. 1480   IF  I0=4 THEN IS=5
  144. 1490   RETURN 
  145.